home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MOUSE_UT / MOUSEG / MOUSEG.PAS
Pascal/Delphi Source File  |  1992-12-13  |  14KB  |  817 lines

  1. UNIT MOUSEG;
  2.  
  3.  
  4. { MOUSEG.TPU: BY JEFF EWING JAN 1992  REV 2.0 SEPT 92
  5.   THIS UNIT PROVIDES A LIBRARY OF MOUSE CALLS FOR YOU TO USE.  
  6.   TO USE THIS UNIT JUST ADD THIS TO YOUR PROGRAM DECLARATION:  
  7.  
  8.   USES MOUSEG;                                                 
  9.  
  10.   PROGRAM SUBMITTED BY : JEFFREY EWING AKA VISION SOFTWARE.   
  11.   VERSION 2.1 REVISED 19 JUN 92 REVISED 3 SEPT 92              }
  12.  
  13.  
  14.  
  15.  
  16.  
  17. INTERFACE
  18.  
  19. VAR
  20.  
  21.  
  22. (* GLOBAL VARIABLES FOR PROCEDURES AND FUNCTIONS TO PASS TO MOUSE *)
  23.  
  24. RAX,
  25.  
  26. RBX,
  27.  
  28. RCX,
  29.  
  30. RDX   : WORD;
  31.  
  32.  
  33. (* THESE ARE THE VARIABLES FOR THE USER TO USE IN PROGRAM          *)
  34.  
  35. (* TO MANIPULATE THE MOUSE                                         *)
  36.  
  37. Presses,X,Y     :    WORD;            { MOUSE X/Y COORDINATES }
  38.  
  39. LM,RM,MM:    BOOLEAN;         { MOUSE BUTTON STATUS   }
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. PROCEDURE MOUSE (VAR M1,M2,M3,M4:WORD);
  47.  
  48. PROCEDURE MOUSENOW (VAR LB,RB,MB:BOOLEAN; VAR XMOUSE,YMOUSE:WORD);
  49.  
  50. PROCEDURE MOUSESHOW;
  51.  
  52. PROCEDURE MOUSEHIDE;
  53.  
  54. PROCEDURE MOUSEINCHES(HMOUSEINCHES,VMOUSEINCHES:WORD);
  55.  
  56. PROCEDURE PRESSLEFT(PRESSES,XMOUSE,YMOUSE:WORD);
  57.  
  58. PROCEDURE PRESSRIGHT(PRESSES,XMOUSE,YMOUSE:WORD);
  59.  
  60. PROCEDURE RELEASELEFT(PRESSES,XMOUSE,YMOUSE:WORD);
  61.  
  62. PROCEDURE RELEASERIGHT(PRESSES,XMOUSE,YMOUSE:WORD);
  63.  
  64. PROCEDURE MOUSERANGE (X1,Y1,X2,Y2:WORD);
  65.  
  66. PROCEDURE MOUSEMICKEY (VAR MHORIZ,MVERT: INTEGER);
  67.  
  68. PROCEDURE MOUSEPUT (X,Y:WORD);
  69.  
  70. PROCEDURE MOUSEWARP(THRESHOLD:WORD);
  71.  
  72. PROCEDURE MOUSESETGCURSOR(CURSORSTRING:STRING);
  73.  
  74. PROCEDURE CURSOFF;
  75.  
  76. PROCEDURE CURSON;
  77.  
  78.  
  79. FUNCTION  MOUSEINIT: BOOLEAN;
  80.  
  81. FUNCTION  MOUSEX: WORD;
  82.  
  83. FUNCTION  MOUSEY: WORD;
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. IMPLEMENTATION
  91.  
  92.  
  93. (**************************  PROCEDURE MOUSE  *******************************)
  94.  
  95. PROCEDURE MOUSE(VAR M1,M2,M3,M4:WORD);   (* PROCEDURE DECLARATION   *)
  96.  
  97.  
  98.  
  99. (* THIS IS THE MAIN MOUSE ROUTINE. ITS CALLED FROM ALL THE OF THE  *)
  100.  
  101. (* OTHER MOUSE PROCEDURES. REFER TO IBM TECHNICAL REFRENCE FOR ANY *)
  102.  
  103. (* FURTHER INFORMATION CONCERNING CALLS TO A MICROSOFT COMPATIBLE  *)
  104.  
  105. (* [aka IBM] MOUSE.                                                *)
  106.  
  107.  
  108. VAR
  109.  
  110. MF,
  111.  
  112. MC,
  113.  
  114. MC2,
  115.  
  116. MC3: WORD;
  117.  
  118.  
  119.  
  120. BEGIN  (* MOUSE *)
  121.  
  122.   MF:=M1;
  123.  
  124.   MC:=M2;
  125.  
  126.   MC2:=M3;
  127.  
  128.   MC3:=M4;
  129.  
  130.   ASM
  131.  
  132.     MOV AX,MF        (* MOUSE FUNCTION NUMBER GOES HERE *)
  133.  
  134.     MOV BX,MC        (* MOUSE DATA GOES HERE            *)
  135.  
  136.     MOV CX,MC2        (* AND HERE...                     *)
  137.  
  138.     MOV DX,MC3        (* AND HERE...                     *)
  139.  
  140.     INT $33          (* CALL MOUSE INTERRUPT HANDLER    *)
  141.  
  142.     MOV MF,AX        (* DATA IS RETURNED HERE:          *)
  143.  
  144.     MOV MC,BX        (* AND HERE...                     *)
  145.  
  146.     MOV MC2,CX        (* AND HERE...                     *)
  147.  
  148.     MOV MC3,DX        (* AND HERE...                     *)
  149.  
  150.   END;
  151.  
  152.   (* PUT THE NEW INFO BACK IN THE VARIABLES *)
  153.  
  154.   M1:=MF;
  155.  
  156.   M2:=MC;
  157.  
  158.   M3:=MC2;
  159.  
  160.   M4:=MC3;
  161.  
  162. END;   (* MOUSE *)
  163.  
  164. (**************************  END PROCEDURE MOUSE  ***************************)
  165.  
  166.  
  167.  
  168. (**************************  PROCEDURE MOUSENOW  ****************************)
  169.  
  170. PROCEDURE MOUSENOW(VAR LB,RB,MB: BOOLEAN; VAR XMOUSE,YMOUSE:WORD);  (* PROCEDURE DECLARATION *)
  171.  
  172.  
  173.  
  174. (* THIS PROCEDURE RETURN THE CURRENT MOUSE LOCATION *)
  175.  
  176. (* AND STATUS OF 3 BUTTONS (BOOLEAN) TRUE IF PUSHED *)
  177.  
  178.  
  179.  
  180. BEGIN  (* MOUSENOW *)
  181.  
  182.  RAX:=3;               (* MOUSE FUNCTION 3 *)
  183.  
  184.  RBX:=0;
  185.  
  186.  RCX:=XMOUSE;
  187.  
  188.  RDX:=YMOUSE;
  189.  
  190.  MOUSE(RAX,RBX,RCX,RDX);
  191.  
  192.  LB:=((RBX = 1) OR (RBX = 3) OR (RBX = 5) OR (RBX = 7));
  193.  
  194.  RB:=((RBX = 2) OR (RBX = 3) OR (RBX = 6) OR (RBX = 7));
  195.  
  196.  MB:=((RBX = 4) OR (RBX = 5) OR (RBX = 6) OR (RBX = 7));
  197.  
  198.  
  199.  XMOUSE:= RCX;           (* UPDATE X/Y VARS WITH MOUSE POSITION *)
  200.  
  201.  YMOUSE:= RDX;
  202.  
  203. END;   (* MOUSENOW *)
  204.  
  205. (**************************  END PROCEDURE MOUSENOW  ************************)
  206.  
  207.  
  208.  
  209. (**************************  PROCEDURE MOUSESHOW  ***************************)
  210.  
  211. PROCEDURE MOUSESHOW; (* PROCEDURE DECLARATION *)
  212.  
  213.  
  214.  
  215. (* THIS PROCEDURE TURNS THE MOUSE CURSOR ON   *)
  216.  
  217.  
  218.  
  219.  
  220. BEGIN  (* MOUSESHOW *)
  221.  
  222.   RAX:=1;
  223.  
  224.   RBX:=0;
  225.  
  226.   RCX:=0;
  227.  
  228.   RDX:=0;
  229.  
  230.   MOUSE(RAX,RBX,RCX,RDX);   (* MOUSE FUNCTION 1 *)
  231.  
  232. END;   (* MOUSESHOW *)
  233.  
  234. (**************************  END PROCEDURE MOUSESHOW  ***********************)
  235.  
  236.  
  237.  
  238. (**************************  PROCEDURE MOUSEHIDE  ***************************)
  239.  
  240. PROCEDURE MOUSEHIDE; (* PROCEDURE DECLARATION *)
  241.  
  242.  
  243.  
  244. (* THIS PROCEDURE TURNS THE MOUSE CURSOR OFF  *)
  245.  
  246.  
  247.  
  248. BEGIN  (* MOUSEHIDE *)
  249.  
  250.   RAX:=2;
  251.  
  252.   RBX:=0;
  253.  
  254.   RCX:=0;
  255.  
  256.   RDX:=0;
  257.  
  258.   MOUSE (RAX,RBX,RCX,RDX);   (* MOUSE FUNCTION 2 *)
  259.  
  260. END;   (*MOUSEHIDE *)
  261.  
  262. (**************************  END PROCEDURE MOUSEHIDE  ***********************)
  263.  
  264. (*************************  pROCEDURE MOUSEINCHES  *************************)
  265.  
  266. PROCEDURE MOUSEINCHES(HMOUSEINCHES,VMOUSEINCHES:WORD);
  267.  
  268.  
  269. BEGIN  (* MOUSEINCHES *)
  270.  
  271.   RAX:=15;
  272.  
  273.   RBX:=0;
  274.  
  275.   IF HMOUSEINCHES > 100 THEN HMOUSEINCHES:=100;
  276.  
  277.   IF VMOUSEINCHES > 100 THEN VMOUSEINCHES:=100;
  278.  
  279.   RCX:=HMOUSEINCHES * 5 DIV 2;
  280.  
  281.   RDX:=VMOUSEINCHES * 8;
  282.  
  283.   MOUSE (RAX,RBX,RCX,RDX);
  284.  
  285.  
  286. END;   (* MOUSEINCHES *)
  287.  
  288. (*************************  END PROCEDURE MOUSEINCHES  **********************)
  289.  
  290. (*************************  PROCEDURE PRESSLEFT        **********************)
  291.  
  292. PROCEDURE PRESSLEFT(PRESSES,XMOUSE,YMOUSE:WORD);
  293.  
  294. BEGIN  (*PRESSLEFT *)
  295.  
  296.   RAX:=5;
  297.  
  298.   RBX:=0;
  299.  
  300.   RCX:=0;
  301.  
  302.   RDX:=0;
  303.  
  304.   MOUSE(RAX,RBX,RCX,RDX);
  305.  
  306.   PRESSES:=RBX;
  307.  
  308.   XMOUSE:=RCX;
  309.  
  310.   YMOUSE:=RDX;
  311.  
  312.  
  313. END;   (* PRESSLEFT *)
  314.  
  315. (*************************  END PROCEDURE PRESSLEFT    **********************)
  316.  
  317.  
  318. (*************************  PROCEDURE PRESSRIGHT       **********************)
  319.  
  320. PROCEDURE PRESSRIGHT(PRESSES,XMOUSE,YMOUSE:WORD);
  321.  
  322. BEGIN  (* PRESSRIGHT *)
  323.  
  324.   RAX:=5;
  325.  
  326.   RBX:=1;
  327.  
  328.   RCX:=0;
  329.  
  330.   RDX:=0;
  331.  
  332.   MOUSE(RAX,RBX,RCX,RDX);
  333.  
  334.   PRESSES:=RBX;
  335.  
  336.   XMOUSE:=RCX;
  337.  
  338.   YMOUSE:=RDX;
  339.  
  340.  
  341. END;   (* PRESSLEFT *)
  342.  
  343.  
  344. (*************************  ENDPROCEDURE PRESSRIGHT    **********************)
  345.  
  346.  
  347. (*************************  PROCEDURE RELEASELEFT      **********************)
  348.  
  349. PROCEDURE RELEASELEFT(PRESSES,XMOUSE,YMOUSE:WORD);
  350.  
  351. BEGIN  (*RELEASELEFT *)
  352.  
  353.   RAX:=6;
  354.  
  355.   RBX:=0;
  356.  
  357.   RCX:=0;
  358.  
  359.   RDX:=0;
  360.  
  361.   MOUSE(RAX,RBX,RCX,RDX);
  362.  
  363.   PRESSES:=RBX;
  364.  
  365.   XMOUSE:=RCX;
  366.  
  367.   YMOUSE:=RDX;
  368.  
  369.  
  370. END;   (* RELEASELEFT *)
  371.  
  372. (*************************  END PROCEDURE RELEASELEFT  **********************)
  373.  
  374.  
  375. (*************************  PROCEDURE RELEASERIGHT     **********************)
  376.  
  377. PROCEDURE RELEASERIGHT(PRESSES,XMOUSE,YMOUSE:WORD);
  378.  
  379. BEGIN  (* RELEASERIGHT *)
  380.  
  381.   RAX:=6;
  382.  
  383.   RBX:=1;
  384.  
  385.   RCX:=0;
  386.  
  387.   RDX:=0;
  388.  
  389.   MOUSE(RAX,RBX,RCX,RDX);
  390.  
  391.   PRESSES:=RBX;
  392.  
  393.   XMOUSE:=RCX;
  394.  
  395.   YMOUSE:=RDX;
  396.  
  397.  
  398. END;   (* RELEASELEFT *)
  399.  
  400.  
  401. (*************************  ENDPROCEDURE PRESSRIGHT    **********************)
  402.  
  403.  
  404.  
  405. (**************************  PROCEDURE MOUSERANGE  **************************)
  406.  
  407. PROCEDURE MOUSERANGE(X1,Y1,X2,Y2:WORD);     (* PROCEDURE DECLARATION   *)
  408.  
  409.  
  410.  
  411. (* THIS PROCEDURE DEFINES A WINDOW FOR THE MOUSE CURSOR TO OPERATE IN. *)
  412.  
  413. (* X1,Y1 ARE COORDINATES FOR UPPER LEFT OF WINDOW. X2,Y2 ARE THE LOWER *)
  414.  
  415. (* RIGHT COORDINATES OF THE MOUSE WINDOW.                              *)
  416.  
  417.  
  418.  
  419. BEGIN  (* MOUSERANGE *)
  420.  
  421.   RAX:=7;
  422.  
  423.   RBX:=0;
  424.  
  425.   RCX:=X1;
  426.  
  427.   RDX:=X2;
  428.  
  429.   MOUSE(RAX,RBX,RCX,RDX);   (* PASS THE TWO X COORDINATES *)
  430.  
  431.  
  432.   RAX:=8;
  433.  
  434.   RBX:=0;
  435.  
  436.   RCX:=Y1;
  437.  
  438.   RDX:=Y2;
  439.  
  440.   MOUSE(RAX,RBX,RCX,RDX);   (* PASS THE TWO Y COORDINATES *)
  441.  
  442.  
  443. END;   (* MOUSERANGE *)
  444.  
  445. (**************************  END PROCEDURE MOUSERANGE  **********************)
  446.  
  447.  
  448.  
  449. (**************************  PROCEDURE MOUSESOFT  ***************************)
  450.  
  451. PROCEDURE MOUSESOFT(SCREENMASK,CURSORMASK:WORD); (* PROCEDURE DECLARATION   *)
  452.  
  453.  
  454. (*  THIS SUB REDEFINES THE TEXT CURSOR FOR THE MOUSE                        *)
  455.  
  456. (*  FOR EXAMPLE YOU CAN CHANGE THE CURSOR COLOR, AND CHARACTER(S) DISPLAYED *)
  457.  
  458. (*  UNDER THE CURSOR AS WELL AS THE CURSOR ITSELF.                          *)
  459.  
  460.  
  461. BEGIN  (* MOUSESOFT *)
  462.  
  463.  RAX:=10;
  464.  
  465.  RBX:=0;
  466.  
  467.  RCX:=SCREENMASK;
  468.  
  469.  RDX:=CURSORMASK;
  470.  
  471.  MOUSE(RAX,RBX,RCX,RDX);
  472.  
  473. END;   (* MOUSESOFT *)
  474.  
  475. (**************************  END PROCEDURE MOUSESOFT  ***********************)
  476.  
  477.  
  478.  
  479. (**************************  PROCEDURE MOUSEMICKEY  *************************)
  480.  
  481. PROCEDURE MOUSEMICKEY(VAR MHORIZ,MVERT: INTEGER); (* PROCEDURE DECLARATION   *)
  482.  
  483.  
  484. (*  THIS PROCEDURE RETURNS "MICKEYS" OR RELATIVE MOTION COUNTS SINCE LAST   *)
  485.  
  486. (*  TO THIS ROUTINE. IF MOUSE HAS NOT BEEN MOVED SINCE LAST CALL, ZEROS     *)
  487.  
  488. (*  ARE RETURNED.                                                           *)
  489.  
  490.  
  491. BEGIN  (* MOUSEMICKEY *)
  492.  
  493.   RAX:=11;       (* MOUSE FUNCTION 11                         *)
  494.  
  495.   RBX:=0;
  496.  
  497.   RCX:=MHORIZ;
  498.  
  499.   RDX:=MVERT;
  500.  
  501.  
  502.   MOUSE(RAX,RBX,RCX,RDX);
  503.  
  504.  
  505.   MVERT:=RCX;
  506.  
  507.   MHORIZ:=RDX;
  508.  
  509.  
  510.   IF MVERT > 62000 THEN   MVERT:= -1 * (MVERT  - 65535);
  511.  
  512.   IF MHORIZ > 62000 THEN MHORIZ:= -1 * (MHORIZ - 65535);
  513.  
  514.  
  515.  
  516.  
  517. END;   (* MOUSEMICKEY *)
  518.  
  519. (**************************  END PROCEDURE MOUSEMICKEY  *********************)
  520.  
  521.  
  522.  
  523. (**************************  PROCEDURE MOUSEPUT  ****************************)
  524.  
  525. PROCEDURE MOUSEPUT(X,Y:WORD); (* PROCEDURE DECLARATION   *)
  526.  
  527.  
  528. (* THIS PROCEDURE "PUTS" THE MOUSE CURSOR AT THE X/Y COORDINATES            *)
  529.  
  530.  
  531. BEGIN  (* MOUSEPUT *)
  532.  
  533.   RAX:=4;      (* MOUSE FUNCTION 4                          *)
  534.  
  535.   RBX:=0;
  536.  
  537.   RCX:=X;      (* HORIZONTAL POSITION TO PLACE MOUSE CURSOR *)
  538.  
  539.   RDX:=Y;      (* VERTICAL   POSITION TO PLACE MOUSE CURSOR *)
  540.  
  541.   MOUSE (RAX,RBX,RCX,RDX);
  542.  
  543. END;   (* MOUSEPUT *)
  544.  
  545. (**************************  END PROCEDURE MOUSEPUT *************************)
  546.  
  547.  
  548.  
  549. (**************************  PROCEDURE MOUSEWARP  ***************************)
  550.  
  551. PROCEDURE MOUSEWARP(THRESHOLD:WORD); (* PROCEDURE DECLARATION   *)
  552.  
  553.  
  554. (* THIS PROCEDURE SETS THE DOUBLE SPEED THRESHOLD FOR THE MOUSE IN UNITS    *)
  555.  
  556. (* OF MICKEYS PER SECOND. THE DEFAULT SETTING IS 64 MICKEYS PER SECOND      *)
  557.  
  558. (* WHEN THE MOUSE IS MOVED FASTER THAN THE THRESHOLD VALUE, THE CURSOR      *)
  559.  
  560. (* MOTION VALUE IS DOUBLED. tHIS MAKES THE CURSOR ZIP ACROSS THE SCREEN     *)
  561.  
  562. (* DURING FAST MOUSE MOVES.                                                 *)
  563.  
  564.  
  565. BEGIN  (* MOUSEWARP *)
  566.  
  567.   RAX:=19;
  568.  
  569.   RBX:=0;
  570.  
  571.   RCX:=0;
  572.  
  573.   RDX:=THRESHOLD;
  574.  
  575.   MOUSE(RAX,RBX,RCX,RDX);
  576.  
  577. END;   (* MOUSEWARP *)
  578.  
  579. (**************************  END PROCEDURE MOUSEWARP  ***********************)
  580.  
  581.  
  582.  
  583. (**************************  PROCEDURE MOUSESETGCURSOR  *********************)
  584.  
  585. PROCEDURE MOUSESETGCURSOR(CURSORSTRING:STRING); (* PROCEDURE DECLARATION    *)
  586.  
  587. VAR
  588.  
  589. TEMP: STRING;   (* COPY OF CURSOR STRING *)
  590.  
  591. XHOT,           (*  X HOT SPOT LOCATION  *)
  592.  
  593. YHOT: WORD;     (*  X HOT SPOT LOCATION  *)
  594.  
  595.  
  596. BEGIN  (* MOUSESETGCURSOR *)
  597.  
  598.   TEMP:= CURSORSTRING;
  599.  
  600.   XHOT:= ORD(TEMP[1]);
  601.  
  602.   YHOT:= ORD(TEMP[2]);
  603.  
  604.   RAX:=9;
  605.  
  606.   RBX:=XHOT;
  607.  
  608.   RCX:=YHOT;
  609.  
  610.   RDX:=OFS(TEMP[1]);
  611.  
  612.   ASM
  613.  
  614.     MOV AX,RAX
  615.  
  616.     MOV BX,RBX
  617.  
  618.     MOV CX,RCX
  619.  
  620.     MOV DX,RDX
  621.  
  622.     INT $33
  623.  
  624.   END;
  625.  
  626.  
  627. END;   (* MOUSESETGCURSOR *)
  628.  
  629. (**************************  END PROCEDURE MOUSESETGCURSOR  *****************)
  630.  
  631.  
  632. (**************************  PROCEDURE CURSOFF  *****************************)
  633.  
  634. PROCEDURE CURSOFF; (* PROCEDURE DECLARATION            *)
  635.  
  636.  
  637. (* THIS PROCEDURE SHUTS OFF THE FAMILIAR FLASHING TEXT *)
  638.  
  639. (* CURSOR. THERE ARE NO PARAMETERS REQUIRED.           *)
  640.  
  641.  
  642.  
  643. BEGIN  (* CURSOFF *)
  644.  
  645.  ASM
  646.  
  647.    MOV AX,256
  648.  
  649.    MOV CX,256
  650.  
  651.    INT $10
  652.  
  653.  END;
  654.  
  655. END;   (* CURSOFF *)
  656.  
  657. (**************************  END PROCEDURE CURSOFF  *************************)
  658.  
  659.  
  660.  
  661. (**************************  PROCEDURE CURSON  ******************************)
  662.  
  663. PROCEDURE CURSON; (* PROCEDURE DECLARATION                                  *)
  664.  
  665. (* THIS PROCEDURE TURNS THE FAMILIAR TEXT CURSOR ON.                        *)
  666.  
  667. (* THIS PROCEDURES WORKS HAND IN HAND WITH CURSOFF                          *)
  668.  
  669.  
  670. BEGIN  (* CURSON *)
  671.  
  672.   ASM
  673.  
  674.     MOV CX,1543
  675.  
  676.     MOV AX,$100
  677.  
  678.     INT $10
  679.  
  680.   END;
  681.  
  682.  
  683. END;   (* CURSON *)
  684.  
  685. (**************************  END PROCEDURE CURSON ***************************)
  686.  
  687.  
  688.  
  689. (**************************  FUNCTION MOUSEINIT *****************************)
  690.  
  691. FUNCTION MOUSEINIT: BOOLEAN; (* FUNCTION DECLARATION                        *)
  692.  
  693.  
  694. (* THIS FUNCTION CHECKS IF THERE IS A MOUSE DRIVER PRESENT                  *)
  695.  
  696. (* IF NOT THEN RAX RETURNS A 0. THIS FUNCTION RETURNS FALSE                 *)
  697.  
  698. (* IF NO MOUSE IS FOUND.                                                    *)
  699.  
  700.  
  701.  
  702. BEGIN  (* MOUSEINIT*)
  703.  
  704.  
  705.  RAX:=0;
  706.  
  707.  RBX:=0;
  708.  
  709.  RCX:=0;
  710.  
  711.  RDX:=0;
  712.  
  713.  MOUSE(RAX,RBX,RCX,RDX);
  714.  
  715.    IF RAX=0 THEN
  716.  
  717.       MOUSEINIT:=FALSE
  718.  
  719.    ELSE
  720.  
  721.       MOUSEINIT:=TRUE;
  722.  
  723.  
  724.       
  725. END;   (* MOUSEINIT *)
  726.  
  727. (**************************  END FUNCTION MOUSEINIT *************************)
  728.  
  729.  
  730.  
  731. (**************************  FUNCTION MOUSEX  *******************************)
  732.  
  733. FUNCTION MOUSEX:WORD;     (* FUNCTION DECLARATION                           *)
  734.  
  735.  
  736. (* THIS FUNCTION RETURNS THE CURRENT X-COORDINATE OF MOUSE LOCATION         *)
  737.  
  738.  
  739. BEGIN  (* MOUSEX *)
  740.  
  741.   RAX:=3;    (* MOUSE FUNCTION 3 {MOUSENOW } *)
  742.  
  743.   RBX:=0;    (* DUMMY VARS TO PASS           *)
  744.  
  745.   RCX:=0;
  746.  
  747.   RDX:=0;
  748.  
  749.   MOUSE(RAX,RBX,RCX,RDX);
  750.  
  751.   MOUSEX:=RCX;
  752.  
  753. END;   (* MOUSEX *)
  754.  
  755. (**************************  END FUNCTION MOUSEX  ***************************)
  756.  
  757.  
  758.  
  759. (**************************  FUNCTION MOUSEY  *******************************)
  760.  
  761. FUNCTION MOUSEY:WORD;     (* FUNCTION DECLARATION                           *)
  762.  
  763.  
  764. (* THIS FUNCTION RETURNS THE CURRENT Y-COORDINATE OF MOUSE LOCATION         *)
  765.  
  766.  
  767. BEGIN  (* MOUSEY *)
  768.  
  769.   RAX:=3;    (* MOUSE FUNCTION 3 {MOUSENOW } *)
  770.  
  771.   RBX:=0;    (* DUMMY VARS TO PASS           *)
  772.  
  773.   RCX:=0;
  774.  
  775.   RDX:=0;
  776.  
  777.   MOUSE(RAX,RBX,RCX,RDX);
  778.  
  779.   MOUSEY:=RDX;
  780.  
  781. END;    (* MOUSEY *)
  782.  
  783. (**************************  END FUNCTION MOUSEY  ***************************)
  784.  
  785.  
  786.  
  787. { THIS FRAGMENT OF CODE REQUIRED FOR TURBO 6.0 }
  788.  
  789. BEGIN
  790.  
  791. (* INITILIZE MOUSE VARIABLES *)
  792.  
  793.   X:=0;
  794.  
  795.   Y:=0;
  796.  
  797.   LM:=FALSE;
  798.  
  799.   MM:=FALSE;
  800.  
  801.   RM:=FALSE;
  802.  
  803.  
  804. (* INITILIZE GLOBAL MOUSE PROCEDURE VARIABLES *)
  805.  
  806.   RAX:=0;
  807.  
  808.   RBX:=0;
  809.  
  810.   RCX:=0;
  811.  
  812.   RDX:=0;
  813.   Presses:=0;
  814.  
  815. END.
  816.  
  817.